Latency-optimized physical coding sublayer

ABSTRACT

A method for reducing latency in a networking application includes receiving data at a physical coding sublayer (PCS) from a media access control (MAC) sublayer, where the MAC sublayer utilizes a first clock domain operating at a first clock frequency. The method further includes performing one or more functions in the PCS on the data in the first clock domain. The method also includes transmitting the data on one or more physical medium attachment (PMA) lanes, where the one or more PMA lanes utilize a second clock domain operating at a second clock frequency, where the first clock frequency and the second clock frequency have a fixed ratio. The data is transmitted from the first clock domain to the second clock domain without buffering the data. The method also includes performing one or more functions in the PCS on the data in the second clock domain.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation that claims priority from U.S. patentapplication Ser. No. 14/445,294, filed Jul. 29, 2014, entitled“Latency-Optimized Physical Coding Sublayer,” which is a continuation ofU.S. patent application Ser. No. 14/319,031, filed Jun. 30, 2014,entitled “Latency-Optimized Physical Coding Sublayer.” Theaforementioned related patent applications are herein incorporated byreference in their entirety.

BACKGROUND

The present invention relates to reducing latency, and morespecifically, to reducing latency in Ethernet systems with multipleclock domains. The Ethernet physical layer is developed according to theOpen Systems Interconnection (OSI) model. Several layers are defined inthe various Ethernet standards, including the Physical Layer (PHY). TheEthernet Physical Coding Sublayer (PCS) is part of the Ethernet PHYlayer and performs autonegotiation, coding, and other functions.

Latency is a critical parameter in many networking applications, such asfinancial applications. 40G and 100G Ethernet is more complex than 10GEthernet, in part due to 64b/66b line coding instead of 8b/10b. TypicalEthernet implementations follow the IEEE functional definition whichincludes three clock domains (Media Access Control (MAC) Interface, PCSCore, and Link Interfaces). In addition, multiple data reformattings areperformed. These data reformattings and clock boundary crossingscontribute to a relatively large amount of latency in the system.

SUMMARY

According to one embodiment of the present invention, a method comprisesreceiving data at a physical coding sublayer (PCS) from a media accesscontrol (MAC) sublayer, wherein the MAC sublayer utilizes a first clockdomain operating at a first clock frequency. The method further includesperforming one or more functions on the data in the first clock domain.The method also comprises transmitting the data on one or more physicalmedium attachment (PMA) lanes, wherein the one or more PMA lanes utilizea second clock domain operating at a second clock frequency, wherein thefirst clock frequency and the second clock frequency have a fixed ratio.The data is transmitted from the first clock domain to the second clockdomain without buffering the data. The method further includesperforming one or more functions on the data in the second clock domain.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

So that the manner in which the above recited aspects are attained andcan be understood in detail, a more particular description ofembodiments of the invention, briefly summarized above, may be had byreference to the appended drawings.

It is to be noted, however, that the appended drawings illustrate onlytypical embodiments of this invention and are therefore not to beconsidered limiting of its scope, for the invention may admit to otherequally effective embodiments.

FIG. 1 illustrates a conceptual block diagram of an Ethernet networkingapplication according to one embodiment described herein;

FIG. 2 illustrates a transmit (TX) PCS structure according to oneembodiment described herein;

FIG. 3 illustrates a receive (RX) PCS structure according to oneembodiment described herein;

FIG. 4 is a flow diagram of method steps for reducing latency inEthernet applications, according to one embodiment described herein; and

FIG. 5 is a flow diagram of method steps for reducing latency inEthernet applications, according to one embodiment described herein.

DETAILED DESCRIPTION

As transmit speeds of Ethernet applications have increased, such as 40Gand 100G Ethernet, the complexity of various cores (i.e., sublayers)have increased as well. One function of the PCS is to encode/decode dataand perform clock compensation functions. In many Ethernet applications,data is transmitted from the MAC layer to the PHY layer. The firstmodule of the PHY layer is the PCS. In standard Ethernetimplementations, data is transmitted from the clock domain of the MACcore (the MAC Interface (MI) clock) to the clock domain of the PCS core(the PMA clock). A large data buffer is used to synchronize datatransmissions from the MAC core to the PCS core. In one embodiment ofthe present invention, the PMA clock frequency and the MI clockfrequency are defined using the same phase-locked loop (PLL), andtherefore there is a fixed ratio between the two clocks. With a knownfixed ratio, the large buffer is not needed to buffer data between thetwo clock domains, and latency is reduced. Further reductions in latencycan be achieved through modifications on the receive (RX) PCS structure.In some embodiments, latency of 400-500 ns in a standard implementationis reduced to about 60 ns.

The descriptions of the various embodiments of the present inventionhave been presented for purposes of illustration, but are not intendedto be exhaustive or limited to the embodiments disclosed. Manymodifications and variations will be apparent to those of ordinary skillin the art without departing from the scope and spirit of the describedembodiments. The terminology used herein was chosen to best explain theprinciples of the embodiments, the practical application or technicalimprovement over technologies found in the marketplace, or to enableothers of ordinary skill in the art to understand the embodimentsdisclosed herein.

In the following, reference is made to embodiments presented in thisdisclosure. However, the scope of the present disclosure is not limitedto specific described embodiments. Instead, any combination of thefollowing features and elements, whether related to differentembodiments or not, is contemplated to implement and practicecontemplated embodiments. Furthermore, although embodiments disclosedherein may achieve advantages over other possible solutions or over theprior art, whether or not a particular advantage is achieved by a givenembodiment is not limiting of the scope of the present disclosure. Thus,the following aspects, features, embodiments and advantages are merelyillustrative and are not considered elements or limitations of theappended claims except where explicitly recited in a claim(s). Likewise,reference to “the invention” shall not be construed as a generalizationof any inventive subject matter disclosed herein and shall not beconsidered to be an element or limitation of the appended claims exceptwhere explicitly recited in a claim(s).

Aspects of the present invention may take the form of an entirelyhardware embodiment, an entirely software embodiment (includingfirmware, resident software, microcode, etc.) or an embodiment combiningsoftware and hardware aspects that may all generally be referred toherein as a “circuit,” “module” or “system.”

The present invention may be a system, a method, and/or a computerprogram product. The computer program product may include a computerreadable storage medium (or media) having computer readable programinstructions thereon for causing a processor to carry out aspects of thepresent invention.

The computer readable storage medium can be a tangible device that canretain and store instructions for use by an instruction executiondevice. The computer readable storage medium may be, for example, but isnot limited to, an electronic storage device, a magnetic storage device,an optical storage device, an electromagnetic storage device, asemiconductor storage device, or any suitable combination of theforegoing. A non-exhaustive list of more specific examples of thecomputer readable storage medium includes the following: a portablecomputer diskette, a hard disk, a random access memory (RAM), aread-only memory (ROM), an erasable programmable read-only memory (EPROMor Flash memory), a static random access memory (SRAM), a portablecompact disc read-only memory (CD-ROM), a digital versatile disk (DVD),a memory stick, a floppy disk, a mechanically encoded device such aspunch-cards or raised structures in a groove having instructionsrecorded thereon, and any suitable combination of the foregoing. Acomputer readable storage medium, as used herein, is not to be construedas being transitory signals per se, such as radio waves or other freelypropagating electromagnetic waves, electromagnetic waves propagatingthrough a waveguide or other transmission media (e.g., light pulsespassing through a fiber-optic cable), or electrical signals transmittedthrough a wire.

Computer readable program instructions described herein can bedownloaded to respective computing/processing devices from a computerreadable storage medium or to an external computer or external storagedevice via a network, for example, the Internet, a local area network, awide area network and/or a wireless network. The network may comprisecopper transmission cables, optical transmission fibers, wirelesstransmission, routers, firewalls, switches, gateway computers and/oredge servers. A network adapter card or network interface in eachcomputing/processing device receives computer readable programinstructions from the network and forwards the computer readable programinstructions for storage in a computer readable storage medium withinthe respective computing/processing device.

Computer readable program instructions for carrying out operations ofthe present invention may be assembler instructions,instruction-set-architecture (ISA) instructions, machine instructions,machine dependent instructions, microcode, firmware instructions,state-setting data, or either source code or object code written in anycombination of one or more programming languages, including an objectoriented programming language such as Smalltalk, C++ or the like, andconventional procedural programming languages, such as the “C”programming language or similar programming languages. The computerreadable program instructions may execute entirely on the user'scomputer, partly on the user's computer, as a stand-alone softwarepackage, partly on the user's computer and partly on a remote computeror entirely on the remote computer or server. In the latter scenario,the remote computer may be connected to the user's computer through anytype of network, including a local area network (LAN) or a wide areanetwork (WAN), or the connection may be made to an external computer(for example, through the Internet using an Internet Service Provider).In some embodiments, electronic circuitry including, for example,programmable logic circuitry, field-programmable gate arrays (FPGA), orprogrammable logic arrays (PLA) may execute the computer readableprogram instructions by utilizing state information of the computerreadable program instructions to personalize the electronic circuitry,in order to perform aspects of the present invention.

Aspects of the present invention are described herein with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems), and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer readable program instructions.

These computer readable program instructions may be provided to aprocessor of a general purpose computer, special purpose computer, orother programmable data processing apparatus to produce a machine, suchthat the instructions, which execute via the processor of the computeror other programmable data processing apparatus, create means forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks. These computer readable program instructionsmay also be stored in a computer readable storage medium that can directa computer, a programmable data processing apparatus, and/or otherdevices to function in a particular manner, such that the computerreadable storage medium having instructions stored therein comprises anarticle of manufacture including instructions which implement aspects ofthe function/act specified in the flowchart and/or block diagram blockor blocks.

The computer readable program instructions may also be loaded onto acomputer, other programmable data processing apparatus, or other deviceto cause a series of operational steps to be performed on the computer,other programmable apparatus or other device to produce a computerimplemented process, such that the instructions which execute on thecomputer, other programmable apparatus, or other device implement thefunctions/acts specified in the flowchart and/or block diagram block orblocks.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods, and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof instructions, which comprises one or more executable instructions forimplementing the specified logical function(s). In some alternativeimplementations, the functions noted in the block may occur out of theorder noted in the figures. For example, two blocks shown in successionmay, in fact, be executed substantially concurrently, or the blocks maysometimes be executed in the reverse order, depending upon thefunctionality involved. It will also be noted that each block of theblock diagrams and/or flowchart illustration, and combinations of blocksin the block diagrams and/or flowchart illustration, can be implementedby special purpose hardware-based systems that perform the specifiedfunctions or acts or carry out combinations of special purpose hardwareand computer instructions.

FIG. 1 illustrates a conceptual block diagram 10 of an Ethernetapplication. On the left side of FIG. 1 are the OSI Model layers 12. TheOSI Model characterizes and standardizes the internal functions of acommunications system by partitioning it into abstraction layers. ThePHY layer 16 is shown at the bottom of the OSI Model 12, with the DataLink layer 14 situated above the PHY layer 16.

Elements 20 a to 36 a and 20 b to 36 b illustrate various sublayers ofan Ethernet application. Elements 20 a to 36 a represent a transmitside, and elements 20 b-36 b represent a receive side. A medium 18connects the transmit and receive sides. Different elements, layers, orsublayers may reside on different chips in certain embodiments. In someembodiments various combinations of the elements may be implementedtogether on a single chip.

Data may travel through block diagram 10 from the transmit side to thereceive side. Data traverses the upper layers 36 a, which may comprisethe application layer, transport layer, network layer, etc. Data thenreaches the data link layer 12, comprising a logical link control (LLC)34 a, an optional MAC control 32 a, and a MAC sublayer 30 a. Data thenenters the PHY layer 12, comprising Reconciliation 28 a, a PCS 26 a, anoptional FEC sublayer 24 a, a PMA sublayer 22 a, and Physical MediumDependent sublayer (PMD) 20 a. Reconciliation 28 a processes faultmessages and may perform other operations.

Data travels from the transmit side to the receive side via medium 18,which may comprises a High-Speed SerDes (serializer/deserializer), orHSS. On the receive side, represented by elements 20 b-36 b, the datamoves through the various sublayers in the opposite direction from thetransmit side, beginning with the PMD 20 b and traversing up the figure,eventually reaching the upper layers 36 b. A number of clock domains maybe used by the various layers and sublayers.

Referring to FIG. 2, PCS TX structure 200 is illustrated according toone embodiment of the present invention. On the left side of FIG. 2, anaxis illustrates approximate latencies for various processes performedon the PCS TX side. An MI clock cycle is represented by Cm, and a PMAclock cycle is represented by Cp. Different processes are separated onthe Figure by horizontal dashed lines. As seen in this exampleembodiment, the top four processes are performed in the MI clock domain(as noted by the Cm label), and the bottom process is performed in thePMA clock domain (as noted by the Cp label).

In a PCS sublayer for 40G and 100G Ethernet, 64-bit blocks of data aretransmitted as a 66-bit entity (known as 64b/66b encoding). The 66-bitentity in the PCS core comprises the 64 bits of data and a 2-bitpreamble, either ‘01’ or ‘10.’ First, however, a data stream is receivedfrom the MAC sublayer as two Media Independent Interface (MIT) blocks,as shown in FIG. 2. These MIT blocks comprise 64 bits of data plus 8bits of control code. Interpacket gap (IPG) Removal Module 202 performsinterpacket gap removal after the MIT blocks are received. An input FIFO204 stores the data. In one embodiment, the depth of the input FIFO is20 blocks.

Encoder 206 encodes the MIT blocks into two 66-bit PCS blocks. To do so,encoder 206 encodes the 64 bits of MAC data and 8 bits of MAC controldata into a 64-bit block that includes a 2-bit preamble to create the66-bit PCS block. Encoder 206 performs a scrambling function to create aroughly equal number of 1s and 0s on the physical lane. The scramblingfunction works to prevent a long string of all 1s or all 0s beingtransmitted. As shown on the latency axis in FIG. 2, the encoding andscrambling functions take approximately 1 MI clock cycle to complete.

The next step comprises Block Distribution 208 and Bit InterleavedParity (BIP) Generation, which provides a parity check. Further,alignment markers (AM) are utilized on the receive side of the PCSsublayer (illustrated in FIG. 3 below) to synchronize the PCS blockstransmitted amongst the various PMA lanes 224. Parity bits alsoaccompany the alignment markers to perform parity checks. Alignmentmarkers allow the receive side of the PCS sublayer to identify the PCSblocks as the blocks are received on the receive side from the PMA lanes224 so that the PCS blocks can be reordered and put into the properorder. Alignment markers are 66-bit blocks inserted into the stream ofPCS blocks in each PMA lane.

During each Cp clock cycle in the PCS transmit structure 200, 32 bits ofdata are transmitted on each PMA lane 224. Multiplexer 218 uses muxinglogic to prepare for converting the 66-bit PCS blocks to be convertedinto 32 bits. The muxing logic in multiplexer 218 receives 40 PCS blocksof data and outputs 32-bit blocks. Therefore, flip flops 212 and 214store PCS blocks before muxing functions are performed. Blockdistribution 208 transmits 66-bit PCS blocks to flip flops 212 and 214,where each flip flop stores 20 PCS blocks. Alignment marker generator210 generates 20 AM blocks stored in AM register 216. Alignment markergenerator 210 also generates the BIP bits described above.

Multiplexer 218 performs alignment marker insertion by interleaving theAM blocks with the PCS blocks. The interleaved AM and PCS blocks areoutput by Multiplexer 218 to a gearbox 220 for each PMA lane 224. Inthis example embodiment, four PMA lanes 224 are illustrated. In otherembodiments, a different number of PMA lanes 224 may be used.

As seen on the latency axis on the left side of FIG. 2, data crossesfrom the MI clock domain (Cm) to the PMA clock domain (Cp) when gearbox220 sends the data to PMA Bit Select 222. Because the MI and PMA clockdomains have a fixed ratio, 33 PMA clock cycles pass for every 32 MIclock cycles that pass. Therefore, gearbox 220 (in the MI clock domain)sends data to PMA Bit Select 222 (in the PMA clock domain) during 32 ofthe 33 PMA clock cycles. At every PMA clock cycle, PMA Bit Select 222receives 33 bits of data. However, the PMA Bit Select 222 forwards only32 of the 33 bits of data on the PMA lane 224 during each clock cycle.Therefore, there is one bit left over on each PMA lane 224 for each Cmclock cycle. After 32 Cm clock cycles, a full 32 bit block of data willbe left over. Because the PMA clock domain has 33 clock cycles for every32 cycles of the MI clock domain no data is received from the MI clockdomain on the 33^(rd) PMA clock cycle, and thus, the leftover 32 bits ofdata can be sent out during the 33^(rd) clock cycle of the PMA domain.Data on the PMA lanes 224 can then be transmitted to an HSS where thedata is transmitted to the receive side of the PCS, as illustrated inFIG. 3 below.

Because of the known fixed ratio between the MI clock frequency and thePMA clock frequency, large data buffers are not needed for datareformatting and for buffering the data during clock boundary crossings.In previous embodiments, a data buffer was needed for buffering andsynchronizing data when the data crossed from one clock domain to thenext. For example, data buffers and synchronization logic would beneeded between multiplexer 218 and PMA Bit Select 222 to synchronizedata as it crossed from the MI clock domain to the PMA clock domain.Because the MI clock frequency and the PMA clock have a known fixedratio in this example embodiment, the PCS TX Structure 200 performs theoperations described above to transmit the data across the clockboundary without the need for data buffering at the clock boundarycrossing. The only data buffering point in the example embodimentillustrated in FIG. 2 is the data buffering point for block distributionand alignment marker generation and insertion. Removing some of theprevious data buffering operations by reducing the number ofasynchronous clock domains reduces the latency in the system.

As seen in the example embodiment of FIG. 2, the total latency isapproximately 12 MI clock cycles and 3 PMA clock cycles, whichintroduces about 19 ns of latency on the transmit side. This amount oflatency is an improvement over standard Ethernet implementations.

Referring now to FIG. 3, a PCS RX structure 300 is illustrated accordingto one embodiment of the present invention. On the left side of FIG. 3,an axis illustrates approximate latencies for various processesperformed on the PCS RX structure 300. As with the TX structure 200, anMI clock cycle is represented by Cm, and a PMA clock cycle isrepresented by Cp. As shown on the latency axis, the top two processes,separated by horizontal dashed lines, are labeled with Cm, and thereforethose processes occur in the MI clock domain. The bottom six processesare labeled with Cp, and therefore those processes occur in the PMAclock domain.

Starting at the bottom of FIG. 3, 32-bit blocks of data are receivedfrom an HSS on four PMA lanes. The operations at the bottom of FIG. 3are performed in the PMA clock domain, as illustrated on the latencyaxis. In one embodiment, the transmissions on the PMA lanes are notcompletely in sync. In other words, the four lanes do not necessarilyhave a known relationship for their respective clock cycles, so datatransmitted on the PMA lanes cannot be sent directly to the nextfunction. First, the data must be synchronized. Therefore,plesiochronous input FIFOs 310 are used.

In the Ethernet protocol, the latencies between different PMA lanes arenot necessarily the same. That is, an alignment marker on PMA lane 0 maybe received at a different time than an alignment marker on PMA lane 1,2, or 3. In addition, as an example, the time difference between a firstalignment marker on PMA lane 0 and a first alignment marker on PMA lane1 may be 6 ns. For the second alignment markers on PMA lane 0 and lane1, the difference may increase to 10 ns or decrease to 2 ns. There maybe a skew variance between the lanes of approximately 4 ns.

Some amount of tolerance is defined in the Ethernet protocol for skewand for skew variance. The maximum skew variance to support according tothe protocol is 4 ns. Because of this potential skew variance, the datacannot be treated as if it is from the same clock domain. However, theplesiochronous FIFOs 310 can move the data on PMA lanes 1, 2, and 3 fromtheir clock domains to the clock domain of line 0, so all the data canthen be considered as coming from the same clock domain. Theplesiochronous FIFOs 310 are therefore used to synchronize data that isnot in sync. The process of synchronizing the data using plesiochronousFIFOs 310 can take approximately 3 PMA clock cycles, as illustrated onthe latency axis on the left side of FIG. 3.

The next step on the receive side 300 is PMA Bit Demux 312. Becausemultiplexing was performed on the transmit side, the Demux 312 performsdemultiplexing on the receive side 300. As shown on the latency axis onthe left side of FIG. 3, the demultiplexing operations can takeapproximately 10 to 11 PMA clock cycles

After demultiplexing, Block sync and Block Select functions 314 reorderthe data using the received alignment marker blocks. In addition, BIPVerification logic 316 performs parity checks and PCS Lane Selectionlogic 318 distributes PCS blocks amongst the transmission lanes.Alignment marker removal modules 320 strip the AM blocks from the datareceived from the PCS TX structure before the data reaches PCS LaneDeskewing Queues 322.

For PCS lane deskewing, the PCS Lane Deskewing Queues 320 may include 20lanes formed into four groups. Because the alignment markers arereceived at different points in time, different levels are shown in thequeues 322 in FIG. 3 to represent different levels of data. The positionof the data boundary is therefore variable from lane-to-lane or fromgroup-to-group. The queues 322 remove the skew so the 20 lanes of datacan be read out on a single clock cycle with all the lanes aligned withone another. Approximately 2 PMA clock cycles are needed to perform thisdeskewing operation as shown in the latency axis.

Block selection 224 selects the data, and then descrambler 226descrambles and decodes the data to reverse the encoding and scramblingperformed in the PCT TX structure 200 illustrated in FIG. 2. Theseprocesses take approximately 1 PMA clock cycle as shown on the latencyaxis.

The Descrambler 326 sends MIT blocks to the Asynchronous Output FIFO 328which is part of the MI clock domain. Therefore, the data crosses fromthe PMA clock domain to the MI clock domain at this point, where theDescrambler 326 outputs two MIT blocks. In one embodiment, theasynchronous FIFO 328 on the receive side 300 is larger than theasynchronous FIFO 204 on the transmit side 200 shown in FIG. 2. Forexample, some data received from the PMA clock domain on the receiveside may be redundant data that is deleted to keep the throughput to theMI clock domain consistent. Asynchronous FIFO 328 has a depth of 20blocks to absorb a glitch caused by the removal of alignment markers,plus one block to accommodate throughput differences between the PMA andthe MI clock domains. This process can take approximately 12 MI clockcycles, as shown on the latency axis.

In previous embodiments, a large data buffer was used to buffer andsynchronize the data as it crossed from the PMA clock domain to the MIclock domain. That large data buffer is not needed in this exampleembodiment, due to the known ratio of the two clock domains.

IPG Insertion/Removal module 330 performs IPG functions before the datais sent to the MAC sublayer through a MI interface. This process takesapproximately 1 MI clock cycle.

As shown in the example embodiment of FIG. 3, the total latency of theRX PCS structure is approximately 13 MI clock cycles and 19 PMA clockcycles, which introduces about 40 ns of latency on the receive side.Therefore, as shown in FIGS. 2 and 3, the total latency of the PCS coreis about 60 ns. Some embodiments may include additional latency due toskew that could reach as high as 180 ns. Latency in standard Ethernetimplementations may reach approximately 500 ns, and thereforeembodiments of the present invention provide a substantial improvement,even with a large amount of skew latency added.

FIG. 4 is a flow diagram of method steps 400 for reducing latency inEthernet applications, according to one embodiment of the presentinvention. Although the method steps are described in conjunction withFIGS. 1-3, persons skilled in the art will understand that any systemconfigured to perform the method steps, in any order, falls within thescope of the present invention. In various embodiments, the hardwareand/or software elements described above in FIGS. 1-3 can be configuredto perform the method steps of FIG. 4.

As shown, a method 400 begins at step 410, where data is received at aPCS TX core utilizing a first clock domain at a first clock frequency.As illustrated in the example embodiment of FIG. 2, data from the MACsublayer is received at the transmit side of the PCS core. In thisexample, the first clock domain is the MI clock domain.

At step 420, one or more functions are performed on the data in thefirst clock domain. As described in FIG. 1 above, these functions mayinclude storing the data in an input FIFO, encoding and/or scramblingthe data, distributing the data into blocks, generating parity bits, orinserting alignment markers.

At step 430, PMA lanes transmit data utilizing a second clock domainoperating at a second clock frequency, wherein the first and secondclock frequencies have a fixed ratio. In the example embodiment of FIG.2, the second clock domain is the PMA clock domain. In addition, thesecond clock frequency and the first clock frequency have a ratio of33:32. Therefore, 33 clock cycles pass on the PMA clock domain for every32 cycles in the MI clock domain. In one embodiment, because of thefixed ratio between the two clock domains, large data buffers are notneeded to buffer and synchronize the data at the clock boundarycrossings.

At step 440, one or more functions are performed on the data in thesecond clock domain. As illustrated in the example embodiment in FIG. 3,these functions may include synchronizing data using plesiochronousFIFOs, demultiplexing data, removing alignment markers, deskewing, anddescrambling or decoding data.

FIG. 5 is a flow diagram of method steps 500 for reducing latency inEthernet applications, according to one embodiment of the presentinvention. Although the method steps are described in conjunction withFIGS. 1-3, persons skilled in the art will understand that any systemconfigured to perform the method steps, in any order, falls within thescope of the present invention. In various embodiments, the hardwareand/or software elements described above in FIGS. 1-3 can be configuredto perform the method steps of FIG. 5.

As shown, a method 500 begins at step 510, where two or moreplesiochronous input FIFOs receive data at a PCS receive side structurevia two or more PMA lanes. As illustrated in the example embodiment ofFIG. 3, four PMA lanes and four plesiochronous input FIFOs are shown.The PMA lanes transmit data, but the four lanes do not necessarily havealigned clock edges for their clock cycles due to the variable skew inthe system.

At step 520, a master plesiochronous input FIFO associated with a masterPMA lane is designated. In the example of FIG. 2, PMA lane 0 is themaster lane.

At step 530, the other PMA lanes are designated slave PMA lanes, andeach of these lanes is also associated with a plesiochronous input FIFO.PMA lanes 1, 2, and 3 in FIG. 3 are plesiochronous with PMA lane 0.

At step 540, the pleisochronous input FIFOs resynchronize the slave PMAlanes to the master PMA. Therefore, the data from the four lanes will bein sync for the next processes in the system, such as PMA Bit Demux asshown in FIG. 3.

Latency is reduced in certain of the above-described embodiments byreducing the number of asynchronous clock domains to avoid longlatencies caused by asynchronous FIFO crossings. In addition, latency isfurther reduced by reducing the number of data buffering points. On thetransmit side, certain embodiments only buffer data for blockdistribution and alignment marker generation and insertion, and do notneed to buffer data for transmitting the data across a clock boundarycrossing. Likewise, on the receive side, large data buffers are notneeded to buffer data at clock boundary crossings.

While the foregoing is directed to embodiments of the present invention,other and further embodiments of the invention may be devised withoutdeparting from the basic scope thereof, and the scope thereof isdetermined by the claims that follow.

What is claimed is:
 1. A method comprising: receiving data at a physicalcoding sublayer (PCS) from a media access control (MAC) sublayer,wherein the MAC sublayer utilizes a first clock domain operating at afirst clock frequency; performing one or more functions in the PCS onthe data in the first clock domain; after performing one or morefunctions in the PCS, transmitting the data on one or more physicalmedium attachment (PMA) lanes coupled to the PCS, wherein the one ormore PMA lanes utilize a second clock domain operating at a second clockfrequency, wherein the first clock frequency and the second clockfrequency have a fixed ratio, and wherein transmitting data from thefirst clock domain to the second clock domain comprises determining,based on the fixed ratio, a first portion of a received data block totransmit during a clock cycle and a second portion of the received datablock to delay transmitting until a subsequent clock cycle; andperforming one or more functions in the PCS on the data in the secondclock domain.
 2. The method of claim 1, wherein performing one or morefunctions on the data in the first clock domain comprises encoding andscrambling the data to create one or more 66-bit blocks.
 3. The methodof claim 1, further comprising: after performing one or more functionson the data in the second clock domain, transmitting the data to anasynchronous output first-in, first-out (FIFO) located in the firstclock domain in the PCS.
 4. The method of claim 1, wherein performingone or more functions on the data in the first clock domain comprisesinserting one or more alignment markers in the data.
 5. The method ofclaim 4, wherein performing one or more functions on the data in thesecond clock domain comprises removing one or more alignment markers inthe data.
 6. The method of claim 1, further comprising transmitting datafrom a transmit side of the PCS to a receive side of the PCS via one ormore PMA lanes.
 7. The method of claim 6, wherein the data is receivedfrom the one or more PMA lanes in one or more plesiochronous input FIFOson the receive side of the PCS.
 8. The method of claim 7, wherein thedata in a subset of the plesiochronous input FIFOs is synchronized tothe data in one of the plesiochronous input FIFOs that is designated asa master.
 9. The method of claim 1, wherein performing one or morefunctions on the data in the second clock domain comprises deskewing thedata.